package com.tansun.ruledata.data.service;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.tansun.rule.pojo.EnterPoint;
import com.tansun.rule.utils.MClass;
import com.tansun.ruledata.data.entity.DeployEnterpoint;
import com.tansun.ruledata.data.entity.DeployReferenceData;
import com.tansun.ruledata.data.entity.DeployVersionInfo;
import com.tansun.ruledata.entity.RuleDataInfo;

public interface BussinessSynchService {
	
	public List<DeployEnterpoint> getAllDeployInfo();
	
	public  String  getDeploymentTimeStamp(String  projectCode,String invokePoint);
	
    public  Map<String,Collection<DeployVersionInfo>>  findDeployRuleVersionNew(String  projectCode,String invokePoint);
    
    public  Map<String,Collection<DeployVersionInfo>>  findDeployRuleVersionByTimestamp(String  projectCode,String invokePoint,String timeStamp);
    
    public void findFunctionInfo(String projectCode,final Map<String,DeployVersionInfo> conMap);
    
    public void findFunctionInfoByTimeStamp(String projectCode,final Map<String,DeployVersionInfo> conMap,String timeStamp);
    
    public Map<String, MClass>  findRefParam(String projectCode,String enterPointer,Map<String,MClass> paramMap,Map<String, MClass> metaMap,String timeStamp);
    
	public String ruleExecutionLogList(String projectCode);
	
	public String findRulegroupEcharsDetails(String  projectCode,String ruleFlowId);
	
	
	public void synchRuleData(List<RuleDataInfo> ruledatainfoList,String projectCode) throws Exception ;
	
	public String depolyRuleData(RuleDataInfo ruledatainfo,String projectCode,String timeStamp) throws Exception;
	
	public  Map<String, MClass>  findMapping(String  projectCode,String timeStamp);
	
	public  Map<String,EnterPoint>  findEnterPoint(String projectCode,String pointCode,String timeStamp);
	
    public String getEffectiveFunc(String projectCode,String timeStamp);
    
    public  Map<String,String> findRuleReleByProjectCode(String  projectCode,String timeStamp);
    
    public  Map<String,String> findPmmlByProjectCode(String  projectCode,String timeStamp);
    
    public  Map<String,Map<String, DeployReferenceData>> findPmmlRefByProjectCode(String  projectCode,String timeStamp);
    
    public void findChallengerInfo(String projectCode,String enterpointer,boolean isTimestame);

	void reloadRuleData(RuleDataInfo ruledatainfo, String projectCode, String timstamp);

}
